home *** CD-ROM | disk | FTP | other *** search
/ NeXT Enterprise Objects Framework 1.1 / NeXT Enterprise Objects Framework 1.1.iso / NextDeveloper / Examples / EnterpriseObjects / MasteringDetails / EOFExtensions.subproj / RelationshipKeySetter.h < prev    next >
Encoding:
Text File  |  1995-02-18  |  2.8 KB  |  58 lines

  1. /* RelationshipKeySetter.h created by cfeder on Tue 08-Nov-1994 */
  2.  
  3. #import <eoaccess/eoaccess.h>
  4.  
  5. @interface EOEntity (attrsNamed)
  6. - attributesNamed:(NSArray *)names;
  7. - createObject;
  8. @end
  9.  
  10. // Extensions to EORelationship to handle assigning foreign keys in
  11. // objects when they are newly assigned to point at one another.
  12. // For instance, if an employee is set to point at a new department object
  13. // [toEmpRelationship updateKeysForSourceObject:theEmp destinationObject:theNewDept]
  14. // will change to dept_id property of theEmp to the dept_id of theNewDept
  15. // and return the modified object (theEmp) so the caller can make sure that object
  16. // is updated in the database.
  17. //
  18. // The following relationship types are handled:
  19. //
  20. // M     Detail   Insert rule              Delete                 Types
  21. // PK -> PK       D->PK := M->PK           delete D               to-one
  22. // FK -> PK       M->FK := D->PK           M->FK=NULL             to-one
  23. // PK -> FK       D->FK := M->PK           Delete D               to-many
  24. // Many to many   create link obj          Delete link            to-many
  25. //
  26. // Decoding: The first line means, when a relationship joins from the
  27. // primary key of the master entity to the primary key of the detail,
  28. // handle and insertion by setting the primary key of the detail to match
  29. // the primary key of the master.
  30. //
  31. @interface EORelationship (setPropsInDestObject)
  32. - (NSArray *)sourceKeys;
  33. - (NSDictionary *)destinationValuesFromSourceObject:sourceObject;
  34. - (void)setJoinPropertiesInDestinationObject:destination fromSourceObject:source;
  35. - (void)setJoinPropertiesInSourceObject:source fromDestinationObject:destination;
  36. - (BOOL)hasJoinsOnPrimaryKeyOfSourceEntity;
  37. - (void)updateMasterObject:master withNewDestinationObject:destination;
  38. - linkObjectForSourceObject:master destinationObject:destination;
  39. - updateKeysForSourceObject:source destinationObject:destination;
  40.     // Sets keys on source or destination to maintain consistency for
  41.     // the source to now map to destination for this relationship.
  42.     // Does not actually assign destination to ivar in source (just messes
  43.     // with the keys).
  44.     // Returns the modified object (source or destination). In the case of
  45.     // a many to many returns a newly created link object.
  46.  
  47. - updateKeysForDeleteOfDestinationObject:destination fromSourceObject:source;
  48.     // Sets keys on source or destination to maintain consistency for
  49.     // a delete of the destination from the source.  Returns the object
  50.     // modified, or a synthesized link object that must be deleted to
  51.     // affect the delete.  The caller is responsible for updating the
  52.     // source object, or deleting the destination or link in the database.
  53.     //
  54.     // This does not actually update destination to ivar in source (just messes
  55.     // with the keys).
  56. @end
  57.  
  58.